//基于select选择的Zepto select地区单选 包装集的插件选择
(function($){
	$.fn.select_single = function(options){
		var opts = $.extend({
			select_title: '',                //select选项值（标题值）
			select_text: '.select_text',      //默认为当前select文本值
			hidden: '',                      //select隐藏表单值
			opt_city: '',                    //select县级市选项值（数组json对象）
			opt_town: '',                    //select乡镇选项值（数组json对象）
			opt_province: '',                //select身份选项值（数组json对象）
			callback: function(hiddenVal){},  //成功确定以后执行的回调函数 当前表单隐藏val值
			select_con: '#select_con'         //追加的内容(快捷方式无啥用)
		}, options || {}); //合并内容
		//直接指向this
		var othis = this;
		var level;
		var handler;//设置事件禁止开启参数
		var set_height;
		var select_con_width;
		//隐藏表单有值时
		if($(opts.hidden).val() != '' && $(opts.hidden).val() != '0'){
			$.post('/common/curr_city/' + $(opts.hidden).val(), {'_token': _token}, function(data){
				othis.find(opts.select_text).html(data);
			});
		}
		//点击事件
		othis.click(function(){
			if($(opts.select_con).length > 0){
				return false;
			}
			level = 1;
			//加载地区身份
			load_area();
			//设置高度
			set_height = $(opts.select_con).height() - $(opts.select_con).find('.select_header').height();
			$(opts.select_con).find('.many_list').css({
				'height': set_height + 'px'
			});
			//设置事件禁止开启参数
			var oneScroll = new IScroll(opts.select_con + " #one", {preventDefault: false});
			var twoScroll = new IScroll(opts.select_con + " #two", {preventDefault: false});
			handler = function(e){ e.preventDefault();};
			document.addEventListener('touchmove', handler, isPassive() ? {
				capture: false,
				passive: false
			} : false);

			//关闭加载层 清除select
			$(opts.select_con).find('.close').click(function(){
				if(level == '1'){
					assignment();
					//设置事件禁止开启参数
					document.removeEventListener('touchmove', handler, false);
				}else if(level == '2'){
					level = 1;
					$(opts.select_con).find('.many_list').show();
					$(opts.select_con).find('.select_list').remove();
				}else if(level == '3'){
					level = 2;
					$(opts.select_con).find('.select_list').find('#first').show();
					$(opts.select_con).find('.select_list').find('#second').remove();
				}
			});
			//点击快选
			$(opts.select_con).find('.many_list').find('.one').find('li a').click(function(){
				assignment();
				othis.find(opts.select_text).html($(this).find('span').html());
				$(opts.hidden).val($(this).attr('data-id'));
				opts.callback($(this).attr('data-id'));
				//设置事件禁止开启参数
				document.removeEventListener('touchmove', handler, false);
			});
			//22级加载
			$(opts.select_con).find('.many_list').find('.two').find('li a').click(function(){
				level = 2;
				$.ajax({
					url: '/common/area/' + $(this).attr('data-id'),
					dataType: "json",
					type: "GET",
					success: function(data){
						var str = '';
						str += '<div class="select_list">';
						str += '<div id="first">';
						str += '<ul class="first">';
						//循环县级市
						if(data.length > 0){
							$.each(data, function(k, v){
								if($(opts.hidden).val().substring(0, 4) + '00' == v.value){
									str += '<li class="curr"><a data-id="' + v.value + '"><span>' + v.text + '</span></a></li>';
								}else{
									str += '<li><a data-id="' + v.value + '"><span>' + v.text + '</span></a></li>';
								}
							});
						}
						str += '</ul>';
						str += '</div>';
						str += '</div>';
						$(opts.select_con).find('.many_list').hide();
						$(opts.select_con).append(str);

						//设置高度
						$(opts.select_con).find('.select_list').css({
							'height': set_height + 'px'
						});
						//设置事件禁止开启参数
						var firstScroll = new IScroll(opts.select_con + " #first", {preventDefault: false});

						//33级加载
						$(opts.select_con).find('.select_list').find('.first').find('li a').click(function(){
							level = 3;
							var curr_html = $(this).find('span').html();
							var curr_cid = $(this).attr('data-id');
							$.ajax({
								url: '/common/city/' + curr_cid,
								dataType: "json",
								type: "GET",
								success: function(data){
									//判断有没有
									if(data.length > 0){
										var str = '';
										str += '<div id="second">';
										str += '<ul class="second">';
										//循环县级市
										if(data.length > 0){
											$.each(data, function(k, v){
												if($(opts.hidden).val() == v.value){
													str += '<li class="sel"><a data-id="' + v.value + '"><span>' + v.text + '</span></a></li>';
												}else{
													str += '<li><a data-id="' + v.value + '"><span>' + v.text, 10 + '</span></a></li>';
												}
											});
										}
										str += '</ul>';
										str += '</div>';
										$(opts.select_con).find('.many_list').hide();
										$(opts.select_con).find('.select_list').find('#first').hide();
										$(opts.select_con).find('.select_list').append(str);
										//设置事件禁止开启参数
										var secondScroll = new IScroll(opts.select_con + " #second", {preventDefault: false});

										//赋值内容 清除select
										$(opts.select_con).find('.select_list').find('.second').find('li a').click(function(){
											assignment();
											othis.find(opts.select_text).html($(this).find('span').html());
											$(opts.hidden).val($(this).attr('data-id'));
											opts.callback($(this).attr('data-id'));
											//设置事件禁止开启参数
											document.removeEventListener('touchmove', handler, false);
										});
									}else{
										assignment();
										othis.find(opts.select_text).html(curr_html);
										$(opts.hidden).val(curr_cid);
										opts.callback(curr_cid);
										//设置事件禁止开启参数
										document.removeEventListener('touchmove', handler, false);
									}
								},
								error: function(){
									layerMsg('可能网络原因引起的错误！', 1);
								}
							});
						});
					},
					error: function(){
						layerMsg('可能网络原因引起的错误！', 1);
					}
				});
			});
		});
		//设置监听滚动
		function isPassive(){
			var supportsPassiveOption = false;
			try{
				addEventListener("test", null, Object.defineProperty({}, 'passive', {
					get: function(){
						supportsPassiveOption = true;
					}
				}));
			}catch(e){
			}
			return supportsPassiveOption;
		}

		//加载内容
		function load_area(){
			var select_con = str_trim(opts.select_con);
			var str = '';
			if($('.masking').length <= 0){
				str += '<div class="masking" id="masking"></div>';
			}
			str += '<div class="select_con" id="' + select_con + '">';
			str += '<div class="select_header">';
			str += '<a class="close"></a>';
			str += '<div class="title">' + opts.select_title + '</div>';
			str += '</div>';

			str += '<div class="many_list">';
			str += '<div id="one">';
			str += '<ul class="one">';

			//循环乡镇
			if(opts.opt_town.length > 0){
				$.each(opts.opt_town, function(k, v){
					if($(opts.hidden).val() == v.value){
						str += '<li class="sel"><a data-id="' + v.value + '"><span>' + mSubstr(v.text, 15) + '</span></a></li>';
					}else{
						str += '<li><a data-id="' + v.value + '"><span>' + mSubstr(v.text, 15) + '</span></a></li>';
					}
				});
			}else{
				//循环县级市
				if(opts.opt_city.length > 0){
					$.each(opts.opt_city, function(k, v){
						if($(opts.hidden).val() == v.value){
							str += '<li class="sel"><a data-id="' + v.value + '"><span>' + mSubstr(v.text, 15) + '</span></a></li>';
						}else{
							str += '<li><a data-id="' + v.value + '"><span>' + mSubstr(v.text, 15) + '</span></a></li>';
						}
					});
				}
			}


			str += '</ul>';
			str += '</div>';

			str += '<div id="two">';
			str += '<ul class="two">';
			//循环省份
			if(opts.opt_province.length > 0){
				$.each(opts.opt_province, function(k, v){
					if($(opts.hidden).val().substring(0, 2) + '0000' == v.value){
						str += '<li class="curr"><a data-id="' + v.value + '"><span>' + v.text + '</span></a></li>';
					}else{
						str += '<li><a data-id="' + v.value + '"><span>' + mSubstr(v.text, 10) + '</span></a></li>';
					}
				});
			}
			str += '</ul>';
			str += '</div>';
			str += '</div>';

			str += '</div>';
			//追击添加的内容
			$('body').append(str);

			$(".masking").show();
			//当文档的宽度大于内容的宽度时
			if($(document).width() > $(opts.select_con).width()){
				select_con_width = ( $(document).width() - $(opts.select_con).width() ) / 2;
				$(opts.select_con).animate({
					left: select_con_width + 'px',
					'animation': 'select_start 0.4s 0s ease',
					'display': 'block'
				}, 300);
			}else{
				$(opts.select_con).animate({
					left: '0',
					'animation': 'select_start 0.4s 0s ease',
					'display': 'block'
				}, 300);
			}
		}

		//赋值内容
		function assignment(){
			$(opts.select_con).animate({
				'left': '7.5rem',
				'animation': 'select_end .4s 0s ease',
				'display': 'block'
			}, 300, function(){
				$(opts.select_con).remove();
				$(".masking").hide();
			});
		}

		return this;
	};
})(Zepto);